/*
 * 编写一个程序，将一个double类型的变量设置为1.0/3.0，一个float类型的变量设置为1.0/3.0。
 * 分别显示两次计算的结果各3次：一次显示小数点后面6位数字；一次显示小数点后面12位数字；一次显示小数点后面16位数字。
 * 程序中要包含float.h头文件，并显示FLT_DIG和DBL_DIG的值。1.0/3.0的值与这些值一致吗？
 * */

#include <stdio.h>
#include <float.h>

int main(){
	double double_var=3.0/1.0;
	float float_var=3.0f/1.0f;
	printf("双精度值显示小数点后6位：%.6f\n",double_var);	
	printf("双精度值显示小数点后12位：%.12f\n",double_var);
	printf("双精度值显示小数点后16位：%.16f\n",double_var);
	printf("单精度值显示小数点后6位：%.6f\n",float_var);
	printf("单精度值显示小数点后12位：%.12f\n",float_var);
	printf("单精度值显示小数点后16位：%.16f\n",float_var);
	printf("float.h中的FLT_DIG:%d\n",FLT_DIG);
	printf("float.h中的DBL_DIG:%d\n",DBL_DIG);
	return 0;
}

/*
 * 为什么用除法计算单精度变量时分子和分母要带f，而双精度变量不用?
 *
 * 在C语言中，浮点数常量默认是双精度（double）类型的，因此如果要使用浮点数常量来初始化一个单精度（float）变量，需要在常量后面加上字母`f`，表示这是一个单精度常量。
 * 例如：
 * - `1.0` 表示双精度常量。
 * - `1.0f` 表示单精度常量。
 * 当您进行除法运算时，编译器会根据操作数的类型来决定运算的精度。
 * 如果操作数中有一个是双精度类型的，那么结果也会是双精度类型的。
 * 因此，如果您想要将结果存储到一个单精度变量中，那么分子和分母都应该是单精度类型的。
 * 所以，在进行除法运算时，如果想要将结果存储到一个单精度变量中，就需要在分子或分母中至少有一个使用单精度常量，即带有后缀`f`。
 * 而对于双精度变量来说，由于双精度是C语言中的默认浮点数类型，因此不需要显式指定分子或分母为双精度常量。
 * */
